/*
 * create by straysnail
 * 2022/2/26
 */
#define ledPin A3 //定义LED灯引脚
#define btnPin 2  //定义按钮引脚
boolean btnVal;   //变量,用于接收按钮检测到的值
int count = 0; //变量,用于记录按钮按下的次数
boolean flag = 0; //用于切换按钮按下与松开的状态
int data;

void setup() {
  Serial.begin(9600);
  pinMode(btnPin,INPUT);  //按键引脚设置为输入状态
}

void loop() {
  btnVal = digitalRead(btnPin);  //读取按钮值，并赋给btnVal
  if(btnVal == 1)  //判断,如果按钮被按下
  {
    delay(10); //延时消除按键的抖动
    flag = 1;
    while(flag == 1) //while循环函数，直到按键被松开，flag == 0时才会退出循环。
    {
      btnVal = digitalRead(btnPin); //再次检测按钮的状态
      if(btnVal == 0)  //判断,如果按钮松开了
      {
        count = count + 1; //记录按钮被点击的次数
        Serial.println(count);  //打印出点击按钮的次数
        flag = 0; //退出按钮按下的状态
      }
    }

    data = count % 2;  //将点击按钮的次数对2求余数, 单数等于1,双数等于0
    if(data == 1) //如果是单数
    {
      digitalWrite(ledPin, HIGH);  //LED灯亮
    }
    else
    {
      digitalWrite(ledPin, LOW);  //LED灯灭
    }
  }
}
